import pandas as pd
import numpy as np
import math as mt
from scipy import stats
import matplotlib.pyplot as plt
from datetime import date, timedelta
import calendar
import statsmodels.api as sm
import warnings
import collections
%pylab inline
from mpl_toolkits.basemap import Basemap
from ipywidgets import widgets
import folium
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection
import math as mt
from matplotlib import colors
from colour import Color
from matplotlib.colors import LinearSegmentedColormap
file_obj = open('Chosen_2_week.txt','r')
regions = file_obj.read()
regions = regions.split(',')
regions = list(map(int,regions))
data_im = pd.read_csv('regions.csv',header = 0,sep = ';')
data_im.head()
conclusions = [pd.DataFrame(),pd.DataFrame(),pd.DataFrame(),pd.DataFrame(),pd.DataFrame(),pd.DataFrame()]
for i in range(6):
strok_2 = 'conclusions_'+str(i)+'.csv'
conclusions[i] = pd.read_csv(strok_2,sep = '\t',header = 0)
for i in range(6):
conclusions[i] = pd.merge(conclusions[i],data_im,how='left',on='region')
print(i)
conclusions[0].head()
def pp(m1):
m = m1
path = []
path.append([m[1],m[3]])
path.append([m[1],m[4]])
path.append([m[2],m[4]])
path.append([m[2],m[3]])
#path.append([m[0],m[2]])
return np.array(path), m1[0]
def pp_new(m1):
m = m1[1:]
path = []
path.append((m[2],m[1]))
path.append((m[3],m[0]))
path.append((m[3],m[1]))
path.append((m[2],m[1]))
#path.append([m[0],m[2]])
return np.array(path)
Timeline= list(conclusions[0][conclusions[0]['region'] == 1075].data_pick.values)
M = max(conclusions[0].passenger_count.values)
def Act_For(Region):
plt.figure(figsize = (30,60))
plt.subplot(6, 1, 1)
conclusions[0][conclusions[0]['region'] == Region].passenger_count.plot(color = 'black', label = 'Actual')
conclusions[0][conclusions[0]['region'] == Region].Predictions_3.plot(linestyle = '--',color = 'green', label = 'Forecast')
plt.legend()
plt.title('Time_difference: 1 HOUR')
plt.subplot(6, 1, 2)
conclusions[0][conclusions[0]['region'] == Region].passenger_count.plot(color = 'black', label = 'Actual')
conclusions[1][conclusions[1]['region'] == Region].Predictions_3.plot(linestyle = '--',color = 'green', label = 'Forecast')
plt.legend()
plt.title('Time_difference: 2 HOUR')
plt.subplot(6, 1, 3)
conclusions[0][conclusions[0]['region'] == Region].passenger_count.plot(color = 'black', label = 'Actual')
conclusions[2][conclusions[2]['region'] == Region].Predictions_3.plot(linestyle = '--',color = 'green', label = 'Forecast')
plt.legend()
plt.title('Time_difference: 3 HOUR')
plt.subplot(6, 1, 4)
conclusions[0][conclusions[0]['region'] == Region].passenger_count.plot(color = 'black', label = 'Actual')
conclusions[3][conclusions[3]['region'] == Region].Predictions_3.plot(linestyle = '--',color = 'green', label = 'Forecast')
plt.legend()
plt.title('Time_difference: 4 HOUR')
plt.subplot(6, 1, 5)
conclusions[0][conclusions[0]['region'] == Region].passenger_count.plot(color = 'black', label = 'Actual')
conclusions[4][conclusions[4]['region'] == Region].Predictions_3.plot(linestyle = '--',color = 'green', label = 'Forecast')
plt.legend()
plt.title('Time_difference: 5 HOUR')
plt.subplot(6, 1, 6)
conclusions[0][conclusions[0]['region'] == Region].passenger_count.plot(color = 'black', label = 'Actual')
conclusions[5][conclusions[5]['region'] == Region].Predictions_3.plot(linestyle = '--',color = 'green', label = 'Forecast')
plt.legend()
plt.title('Time_difference: 6 HOUR')
conclusions[0][conclusions[0]['data_trig'] == 2904][['passenger_count','west','east','south','north']].values[0]
def Mapp(Time,F):
print(conclusions[0][conclusions[0]['data_trig'] == Time].data_pick.values[0])
fig = plt.figure(figsize=(20,15))
plt.figure(0)
color_1 = 'blue'
color_2 = 'red'
color_1 = Color(color_1)
color_2 = Color(color_2)
grad = list(color_1.range_to(color_2, int(M+1)))
# Colorbar.
trips_values = list(range(0, int(M)))
colorbar = np.array([[tuple([int(round(j*255, 0)) for j in grad[int(i)].rgb]) for i in trips_values] for _ in range(100)])
plt.imshow(colorbar)
plt.yticks([])
ticks = list(range(len(trips_values)))
plt.xticks(ticks=ticks[::200] + [ticks[-1]], labels=trips_values[::200] + [trips_values[-1]])
plt.title('Количество поездок в час', y=1.01, fontsize=20)
plt.show()
plt.figure(1)
fig = plt.figure(figsize=(25,25))
ax1 = plt.subplot2grid((1,2), (0,0))
ax2 = plt.subplot2grid((1,2), (0,1))
m_1 = Basemap(llcrnrlon=-74.25559,llcrnrlat=40.49612,urcrnrlon=-73.70001,urcrnrlat=40.91553,
resolution='h', projection='cyl', lat_0 = 40.748306, lon_0 = -73.985756, ax=ax1)
m_1.drawcoastlines()
m_1.drawcountries()
temp_data_1 = conclusions[0][conclusions[0]['data_trig'] == Time][['passenger_count','west','east','south','north']]
for i in range(102):
patches = []
homeplate = np.array(pp(temp_data_1.values[i])[0])
k = pp(temp_data_1.values[i])[1]
fillcolor = grad[int(k+1)].hex_l
patches.append(Polygon(homeplate))
ax1.add_collection(PatchCollection(patches, facecolor=fillcolor))
ax1.set_title("Actual")
# ------------------------------------------------------------------------------------------------------------------------
m_2 = Basemap(llcrnrlon=-74.25559,llcrnrlat=40.49612,urcrnrlon=-73.70001,urcrnrlat=40.91553,
resolution='h', projection='cyl', lat_0 = 40.748306, lon_0 = -73.985756, ax=ax2)
m_2.drawcoastlines()
m_2.drawcountries()
temp_data_2 = conclusions[0][conclusions[0]['data_trig'] == Time+F][['Predictions_3','west','east','south','north']]
for i in range(102):
patches = []
homeplate = np.array(pp(temp_data_2.values[i])[0])
k = pp(temp_data_2.values[i])[1]
fillcolor = grad[int(k+1)].hex_l
patches.append(Polygon(homeplate))
ax2.add_collection(PatchCollection(patches, facecolor=fillcolor))
strok = 'Forecast in '+str(F)+' hour(s)'
ax2.set_title(strok)
plt.show()
widgets.interact(Act_For,Region=regions)
w = widgets.interactive(Mapp, Time=(2904,3623,1), F=(0,6,1))
display(w)